RyuGod
Programming Language Collector
Hello, World!
examples
100 doors
99 bottles of beer
fizzbuzz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//
//  F#: 100 doors 예제
//  출처: http://www.rosettacode.org/
//
let modifier doors skip =
    let rec modifierInner doors skip counter =
        match doors with
        | [] -> []                                                  //base case: end of hall
        | first::rest when counter >= skip ->                       //case: reached door marked for change
            not first::(modifierInner rest skip 0)                  //  open or close that door
        | first::rest ->                                            //case: reached door to skip
            first::(modifierInner rest skip (counter+1))            //  skip it                         
    modifierInner doors skip 0                                      //Initial state for walkthrough
 
let answerDoors doors =
    let rec modifyDoors skipRange doors modifier =                  //fold each door result to the next with
        List.fold modifier doors skipRange                          //with an increasing skip
    modifyDoors [0..99] doors modifier                              //Initial starting state
 
let initDoors = Array.create 100 false |> Array.toList              //Initialize all doors to closed (false)
 
answerDoors initDoors |> printfn "%A"                               //print answer (false is closed door)
Enter to Rename, <Shift>+Enter to Preview
TerminalInput valueWebOutput
W